Page({
  data: {
    panduan: 0, // 0:初始搜索页 1:专家 2:文章 3:测试 4:问答 5:全部结果
    lishi: true, // 是否显示历史记录
    searchHistory: [], // 搜索历史列表
    searchValue: "", // 搜索框内容
    isSearching: false, // 是否正在搜索

    // 四类数据列表（存储后端返回的模糊查询结果）
    expertList: [],    // 专家
    articleList: [],   // 文章
    testList: [],      // 测试
    qaList: [],        // 问答

    // 新增：全部结果相关
    allResults: [], // 合并后的所有结果（含类型标记）
    currentFilter: 'all', // 当前筛选类型（默认全部）
    filteredAllResults: [] // 筛选后的全部结果
  },

  // 生命周期函数：页面加载时读取本地历史记录
  onLoad() {
    const history = wx.getStorageSync('searchHistory') || [];
    this.setData({ 
      searchHistory: history,
      filteredAllResults: []
    });
    // 初始化防抖函数（输入防抖300ms）
    this.debouncedSearch = this.debounce(this.handleSearchAll, 300);
  },

  // 防抖函数（避免频繁调用接口）
  debounce(func, delay) {
    let timer = null;
    return (...args) => {
      clearTimeout(timer);
      timer = setTimeout(() => func.apply(this, args), delay);
    };
  },

  // 监听输入框变化（实时搜索）
  onInputChange(e) {
    const value = e.detail.value.trim();
    this.setData({ searchValue: value });
    // 输入时触发防抖搜索（输入停止300ms后执行）
    if (value) {
      this.debouncedSearch(value);
    } else {
      // 输入为空时清空全部结果
      this.setData({ allResults: [], filteredAllResults: [] });
    }
  },

  // 点击确认按钮搜索
  handleConfirm() {
    const { searchValue, searchHistory } = this.data;
    if (!searchValue) return;

    // 更新搜索历史（去重 + 限制最多10条）
    const newHistory = [searchValue, ...searchHistory.filter(item => item !== searchValue)];
    if (newHistory.length > 10) newHistory.pop(); // 只保留最近10条
    this.setData({ searchHistory: newHistory });
    wx.setStorageSync('searchHistory', newHistory); // 持久化存储

    // 调用四次后端模糊查询
    this.handleSearchAll(searchValue);
    // 搜索后默认显示“全部结果”页面
    this.setData({ 
      panduan: 5,
      currentFilter: 'all' // 重置筛选条件
    });
  },

  // 核心：调用四次后端模糊查询接口，并合并结果
  handleSearchAll(keyword) {
    if (!keyword) return;

    this.setData({ 
      isSearching: true,
      allResults: [], // 清空上次结果
      filteredAllResults: []
    });

    // 1. 查询专家（模糊查询）- 标记 type: 'counselor'
    wx.request({
      url: `http://localhost:8080/counselor/page`,
      data: { 
        counselorName: keyword,
        pageSize:20
       },
      method: 'GET',
      success: (res) => {
        if (res.data.code === 200) {
          const counselors = res.data.data.list.map(item => ({
            ...item,
            type: 'counselor', // 标记为“专家”类型
            id:item.id,
            title: item.counselorName, 
            desc: item.intro || '暂无专长描述', 
            img:item.headImageUrl,
            gradeName:item.counselorGrade.gradeName
          }));
          // 合并到全部结果
          this.setData({
            expertList: res.data.data.list,
            allResults: [...this.data.allResults, ...counselors],
            filteredAllResults: [...this.data.allResults, ...counselors]
          });
        } else {
          this.setData({ expertList: [] });
        }
      },
      fail: () => {
        this.setData({ expertList: [] });
      }
    });

    // 2. 查询文章（模糊查询）- 标记 type: 'article'
    wx.request({
      url: `http://localhost:8080/article/page`,
      data: { 
        articleName: keyword,
        pageSize:20
      },
      method: 'GET',
      success: (res) => {
        if (res.data.code === 200) {
          const articles = res.data.data.list.map(item => ({
            ...item,
          
            type: 'article', // 标记为“文章”类型
            id:item.id,
            title: item.articleName,
            img:item.briefImageUrl
          }));
          // 合并到全部结果
          this.setData({
            articleList: res.data.data.list,
            allResults: [...this.data.allResults, ...articles],
            filteredAllResults: [...this.data.allResults, ...articles]
          });
        } else {
          this.setData({ articleList: [] });
        }
      },
      fail: () => {
        this.setData({ articleList: [] });
      }
    });

    // 3. 查询测试（模糊查询）- 标记 type: 'test'
    wx.request({
      url: `http://localhost:8080/mindTest/page`,
      data: {
        problemName: keyword ,
        pageSize:20
      },
      method: 'GET',
      success: (res) => {
        if (res.data.code === 200) {
          const tests = res.data.data.list.map(item => ({
            ...item,
            type: 'test', // 标记为“测试”类型
            id:item.id,
            desc: item.content || '暂无测试说明'
          }));
          // 合并到全部结果
          this.setData({
            testList: res.data.data.list,
            allResults: [...this.data.allResults, ...tests],
            filteredAllResults: [...this.data.allResults, ...tests]
          });
        } else {
          this.setData({ testList: [] });
        }
      },
      fail: () => {
        this.setData({ testList: [] });
      }
    });

    // 4. 查询问答（模糊查询）,这里增加了user是因为添加的方法不要重复查询回复
    wx.request({
      url: `http://localhost:8080/problem/page/user`,
      data: { 
        content: keyword,
        pageSize:20
       },
      method: 'GET',
      success: (res) => {
        if (res.data.code === 200) {
          const replies = res.data.data.list.map(item => ({
            ...item,
            type: 'reply', // 标记为“问答”类型
            id:item.id,
            time:item.createTime,
            user:item.user.nickname,
            desc: item.content 
          }));
          // 合并到全部结果
          this.setData({
            qaList: res.data.data.list,
            allResults: [...this.data.allResults, ...replies],
            filteredAllResults: [...this.data.allResults, ...replies]
          });
        } else {
          this.setData({ qaList: [] });
        }
      },
      fail: () => {
        this.setData({ qaList: [] });
      },
      complete: () => {
        // 最后一个接口完成后关闭加载状态
        this.setData({ isSearching: false });
      }
    });
  },

  // 点击历史记录项搜索
  tapHistory(e) {
    const keyword = e.currentTarget.dataset.item;
    this.setData({ searchValue: keyword });
    this.handleConfirm(); // 触发搜索
  },

  // 清除搜索历史
  clearHistory() {
    wx.showModal({
      title: '提示',
      content: '确定要清除所有搜索历史吗？',
      success: (res) => {
        if (res.confirm) {
          this.setData({ searchHistory: [] });
          wx.removeStorageSync('searchHistory');
        }
      }
    });
  },

  // 切换到专家页面
  zhuanjia() {
    this.setData({ panduan: 1 });
    // 如果已有搜索词，主动触发一次搜索
    if (this.data.searchValue) {
      this.handleSearchAll(this.data.searchValue);
    }
  },

  // 切换到文章页面
  wenzhang() {
    this.setData({ panduan: 2 });
    if (this.data.searchValue) {
      this.handleSearchAll(this.data.searchValue);
    }
  },

  // 切换到测试页面
  ceshi() {
    this.setData({ panduan: 3 });
    if (this.data.searchValue) {
      this.handleSearchAll(this.data.searchValue);
    }
  },

  // 切换到问答页面
  huida() {
    this.setData({ panduan: 4 });
    if (this.data.searchValue) {
      this.handleSearchAll(this.data.searchValue);
    }
  },

  // 切换到全部结果页面
  showAllResults() {
    this.setData({ panduan: 5 });
  },

  // 筛选全部结果中的类型（专家/文章/测试/问答）
  filterResults(e) {
    const type = e.currentTarget.dataset.type;
    const { allResults } = this.data;
    let filtered = allResults;
    // 筛选指定类型
    if (type !== 'all') {
      filtered = allResults.filter(item => item.type === type);
    }
    this.setData({
      currentFilter: type,
      filteredAllResults: filtered
    });
  },

  // 从分类页返回初始搜索页
  backToSearch() {
    this.setData({ panduan: 0 });
  },

  // 返回首页
  back() {
    wx.switchTab({ url: '/pages/index/index' });
  }
});